# 作者：一只牛吗
# 2025 年01月 23日 03时 40分 14秒
# 1278599690@qq.com
# 集合和字典一样，都是一组无序的元素，但集合中的元素不能重复。采用哈希表实现，因此查找、插入和删除的速度都很快。
# 使用场景是去重、交集、并集、差集等。
def basic_set():
    set1 = {1, 2, 3, 4, 5}
    set2 = set()  # 创建一个空集合，注意用set()而不是{}，因为{}是用来创建空字典的。
    # 集合由于是无序的，因此不能用索引访问元素，只能用循环来遍历。
    x = {"apple", "banana", "orange", "pineapple", "strawberry"}
    y = {"banana", "orange", "grape", "peach", "watermelon"}
    # z = x.difference(y)  # 集合的差集
    # print(z)  # 输出结果：{'apple'}
    # 集合的交集、并集、差集等操作，可以直接用对应的方法。
    # x.difference_update(y)
    # print(x)

    # set3 = x.intersection(y)  # 集合的交集
    # print(set3)

    z = x.symmetric_difference(y)  # 集合的对称差集
    print(z) # 即罗列出x和y中不重复的元素

    z = x.union(y)  # 集合的并集
    print(z)

    x.update(y)  # 将y中的元素添加到x中
    print(x)

    print('apple' in z)


def generate_set():
    # 集合推导式，可以用来生成集合。
    set1 = {x for x in range(1, 10) if x % 2 == 0}
    print(set1)  # 输出结果：{2, 4, 6, 8}
    # 元组生成式，可以用来生成元组。
    tuple1 = tuple(x for x in range(10) if x % 2 == 0)
    print(tuple1)  # 输出结果：(0, 2, 4, 6, 8)


if __name__ == '__main__':
    generate_set()
